home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 24 / Amiga Format AFCD24 (Feb 1998, Issue 108).iso / -in_the_mag- / emulation / amiga / uae-0.7.0b2 / src / od-macos / sound.h < prev   
C/C++ Source or Header  |  1998-01-20  |  1KB  |  56 lines

  1.  /* 
  2.   * UAE - The Un*x Amiga Emulator
  3.   * 
  4.   * Support for Mac OS sound
  5.   * 
  6.   * Copyright 1996 Ernesto Corvi
  7.   */
  8.  
  9. #include <Sound.h>
  10.  
  11. extern SndChannelPtr newChannel;
  12. extern ExtSoundHeader theSndBuffer;
  13. extern SndCommand theCmd;
  14.  
  15. /* The buffer is too large... */
  16. extern uae_u16 buffer0[44100], buffer1[44100], *sndbufpt;
  17.  
  18. extern int have_sound;
  19. extern int nextbuf;
  20. extern Boolean sFlag;
  21. extern int sndbufsize;
  22.  
  23. static __inline__ void flush_sound_buffer (void)
  24. {
  25.     sndbufpt = buffer0;
  26.     
  27.     theSndBuffer.samplePtr = (Ptr)buffer0;
  28.     theSndBuffer.numChannels = 1;
  29.     theSndBuffer.sampleRate = 0xac440000;
  30.     theSndBuffer.encode = extSH;
  31.     theSndBuffer.numFrames = sndbufsize;
  32.     theSndBuffer.sampleSize = 8;
  33.     theCmd.param1 = 0;
  34.     theCmd.param2 = (long)&theSndBuffer;
  35.     theCmd.cmd = bufferCmd;
  36.     SndDoCommand(newChannel, &theCmd, false);    
  37. }
  38.  
  39. static __inline__ void check_sound_buffers (void)
  40. {
  41.     if ((char *)sndbufpt - (char *)sndbuffer >= sndbufsize) {
  42.     flush_sound_buffer ();
  43.     }
  44. }
  45.  
  46. #define PUT_SOUND_BYTE(b) do { *(uae_u8 *)sndbufpt = b; sndbufpt = (uae_u16 *)(((uae_u8 *)sndbufpt) + 1); } while (0)
  47. #define PUT_SOUND_WORD(b) do { *(uae_u16 *)sndbufpt = b; sndbufpt = (uae_u16 *)(((uae_u8 *)sndbufpt) + 2); } while (0)
  48. #define SOUND16_BASE_VAL 0
  49. #define SOUND8_BASE_VAL 0
  50.  
  51. #define DEFAULT_SOUND_BSIZ 8192
  52. #define DEFAULT_SOUND_BITS 16
  53. #define DEFAULT_SOUND_FREQ 44100
  54.  
  55. #undef DONT_WANT_SOUND
  56.